/**
 * @file at24cxx.c
 * @brief AT24CXX兼容层实现（无硬件版本）
 * @note 本文件提供兼容旧版AT24CXX接口的适配层
 *       由于硬件上没有EEPROM芯片，所有读写操作为空实现
 *       触摸屏每次上电需要重新校准，或使用默认参数
 */

#include "sys.h"
#include "stm32f1xx_hal.h"

// 注意：板子上没有AT24 EEPROM芯片
// 触摸屏校准数据无法保存，每次上电需要重新校准

/**
 * @brief AT24CXX初始化（空实现，因为没有硬件）
 */
void AT24CXX_Init(void)
{
    // 无硬件，空实现
}

/**
 * @brief 写入一个字节到AT24CXX（空实现）
 * @param WriteAddr 写入地址
 * @param DataToWrite 要写入的数据
 */
void AT24CXX_WriteOneByte(uint16_t WriteAddr, uint8_t DataToWrite)
{
    // 无硬件，空实现
    (void)WriteAddr;
    (void)DataToWrite;
}

/**
 * @brief 从AT24CXX读取一个字节（空实现，返回0）
 * @param ReadAddr 读取地址
 * @return 读取的数据（始终返回0，表示未校准）
 */
uint8_t AT24CXX_ReadOneByte(uint16_t ReadAddr)
{
    // 无硬件，返回0表示未校准
    (void)ReadAddr;
    return 0;
}

/**
 * @brief 写入指定长度的数据到AT24CXX
 * @param WriteAddr 写入起始地址
 * @param DataToWrite 要写入的数据
 * @param Len 数据长度（1-4字节）
 */
void AT24CXX_WriteLenByte(uint16_t WriteAddr, uint32_t DataToWrite, uint8_t Len)
{
    uint8_t i;
    for(i = 0; i < Len; i++)
    {
        AT24CXX_WriteOneByte(WriteAddr + i, (uint8_t)((DataToWrite >> (8 * i)) & 0xFF));
    }
}

/**
 * @brief 从AT24CXX读取指定长度的数据
 * @param ReadAddr 读取起始地址
 * @param Len 数据长度（1-4字节）
 * @return 读取的数据
 */
uint32_t AT24CXX_ReadLenByte(uint16_t ReadAddr, uint8_t Len)
{
    uint8_t i;
    uint32_t temp = 0;
    for(i = 0; i < Len; i++)
    {
        temp <<= 8;
        temp += AT24CXX_ReadOneByte(ReadAddr + Len - i - 1);
    }
    return temp;
}

